home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / xarchie-2.0.9 / FWF / Dir / DirMgr.h < prev    next >
C/C++ Source or Header  |  1995-06-18  |  7KB  |  226 lines

  1. /****************************************************************************
  2.  
  3.     DirMgr.h
  4.  
  5.     This file contains the C declarations and definitions for the
  6.     DirectoryMgr system.
  7.  
  8.     This system is intended to managed filtered and sorted directory
  9.     lists.
  10.  
  11.  ****************************************************************************/
  12. /*
  13.  * Copyright 1990,1991,1992 Brian Totty
  14.  * 
  15.  * Permission to use, copy, modify, distribute, and sell this software
  16.  * and its documentation for any purpose is hereby granted without fee,
  17.  * provided that the above copyright notice appears in all copies and that
  18.  * both that copyright notice and this permission notice appear in
  19.  * supporting documentation, and that the name of Brian Totty or
  20.  * University of Illinois not be used in advertising or publicity
  21.  * pertaining to distribution of the software without specific, written
  22.  * prior permission.  Brian Totty and University of Illinois make no
  23.  * representations about the suitability of this software for any
  24.  * purpose.  It is provided "as is" without express or implied warranty.
  25.  *
  26.  * Brian Totty and University of Illinois disclaim all warranties with
  27.  * regard to this software, including all implied warranties of
  28.  * merchantability and fitness, in no event shall Brian Totty or
  29.  * University of Illinois be liable for any special, indirect or
  30.  * consequential damages or any damages whatsoever resulting from loss of
  31.  * use, data or profits, whether in an action of contract, negligence or
  32.  * other tortious action, arising out of or in connection with the use or
  33.  * performance of this software.
  34.  *
  35.  * Author:
  36.  *     Brian Totty
  37.  *     Department of Computer Science
  38.  *     University Of Illinois at Urbana-Champaign
  39.  *    1304 West Springfield Avenue
  40.  *     Urbana, IL 61801
  41.  * 
  42.  *     totty@cs.uiuc.edu
  43.  *     
  44.  */ 
  45.  
  46. #ifndef _DIRECTORY_MGR_H_
  47. #define    _DIRECTORY_MGR_H_
  48.  
  49. #include <Directory.h>
  50.  
  51. /*---------------------------------------------------------------------------*
  52.  
  53.         Simple DirectoryMgr Interface
  54.  
  55.         DirectoryMgrSimpleOpen();
  56.         DirectoryMgrSimpleRefilter();
  57.         DirectoryMgrSimpleResort();
  58.  
  59.     Standard DirectoryMgr Interface
  60.  
  61.         DirectoryMgrOpen();
  62.         DirectoryMgrClose();
  63.         DirectoryMgrRefilter();
  64.         DirectoryMgrRefresh();
  65.         DirectoryMgrResort();
  66.  
  67.     Moving Around Items
  68.  
  69.         DirectoryMgrGotoItem();
  70.         DirectoryMgrGotoNamedItem();
  71.         DirectoryMgrRestart();
  72.         DirectoryMgrGetIndex();
  73.         DirectoryMgrCurrentEntry();
  74.         DirectoryMgrNextEntry();
  75.         DirectoryMgrPrevEntry();
  76.  
  77.     Utility Functions
  78.  
  79.         DirectoryMgrSimpleFilterFunc();
  80.         DirectoryMgrSimpleSortingFunc();
  81.  
  82.     Comparison Functions
  83.  
  84.         DirectoryMgrCompareName();
  85.         DirectoryMgrCompareSizeAscending();
  86.         DirectoryMgrCompareSizeDescending();
  87.  
  88.     Macros
  89.  
  90.         DirectoryMgrDir();
  91.         DirectoryMgrData();
  92.         DirectoryMgrSortedPtrs();
  93.         DirectoryMgrFilterFunc();
  94.         DirectoryMgrCompFunc();
  95.         DirectoryMgrFilterData();
  96.         DirectoryMgrFreeFilterData();
  97.         DirectoryMgrTotalCount();
  98.         DirectoryMgrFilteredCount();
  99.         DirectoryMgrCurrentIndex();
  100.  
  101.  
  102.  *---------------------------------------------------------------------------*/
  103.  
  104. #ifndef PFI
  105. typedef int (*PFI)();
  106. #endif
  107.  
  108. typedef struct entry_cons
  109. {
  110.     DIR_ENTRY dir_entry;
  111.     struct entry_cons *next;
  112. } DIR_ENTRY_CONS;
  113.  
  114. typedef    DIR_ENTRY_CONS DirEntryCons;
  115.  
  116. typedef struct
  117. {
  118.     DIRECTORY dir;
  119.     DIR_ENTRY *data;
  120.     DIR_ENTRY **sorted_ptrs;
  121.     int total_count;
  122.     int filtered_count;
  123.     PFI filter_func;
  124.     char *filter_data;
  125.     int free_filter_data;
  126.     PFI comp_func;
  127.     int current_index;
  128. } DIRECTORY_MGR;
  129.  
  130. typedef    DIRECTORY_MGR DirectoryMgr;
  131.  
  132. #define    DIR_MGR_SORT_NONE            0
  133. #define    DIR_MGR_SORT_NAME            1
  134. #define    DIR_MGR_SORT_NAME_DIRS_FIRST        2
  135. #define DIR_MGR_SORT_SIZE_ASCENDING        3
  136. #define DIR_MGR_SORT_SIZE_DESCENDING        4
  137. #define    DIR_MGR_SORT_ACCESS_ASCENDING        5
  138. #define    DIR_MGR_SORT_ACCESS_DESCENDING        6
  139.  
  140. #define    DirectoryMgrDir(dm)        (&((dm)->dir))
  141. #define    DirectoryMgrData(dm)        ((dm)->data)
  142. #define    DirectoryMgrSortedPtrs(dm)    ((dm)->sorted_ptrs)
  143. #define    DirectoryMgrFilterFunc(dm)    ((dm)->filter_func)
  144. #define    DirectoryMgrCompFunc(dm)    ((dm)->comp_func)
  145. #define    DirectoryMgrFilterData(dm)    ((dm)->filter_data)
  146. #define    DirectoryMgrFreeFilterData(dm)    ((dm)->free_filter_data)
  147. #define    DirectoryMgrTotalCount(dm)    ((dm)->total_count)
  148. #define    DirectoryMgrFilteredCount(dm)    ((dm)->filtered_count)
  149. #define    DirectoryMgrCurrentIndex(dm)    ((dm)->current_index)
  150.  
  151. #if (!NeedFunctionPrototypes)
  152.  
  153. DirectoryMgr *    DirectoryMgrSimpleOpen();
  154. int        DirectoryMgrSimpleRefilter();
  155. int        DirectoryMgrSimpleResort();
  156.  
  157. DirectoryMgr *    DirectoryMgrOpen();
  158. void        DirectoryMgrClose();
  159. int        DirectoryMgrRefilter();
  160. int        DirectoryMgrRefresh();
  161. void        DirectoryMgrResort();
  162.  
  163. int        DirectoryMgrGotoItem();
  164. int        DirectoryMgrGotoNamedItem();
  165. void        DirectoryMgrRestart();
  166. int        DirectoryMgrGetIndex();
  167. DirEntry *    DirectoryMgrCurrentEntry();
  168. DirEntry *    DirectoryMgrNextEntry();
  169. DirEntry *    DirectoryMgrPrevEntry();
  170.  
  171. int        DirectoryMgrSimpleFilterFunc();
  172. int        DirectoryMgrSimpleSortingFunc();
  173.  
  174. int        DirectoryMgrCompareName();
  175. int        DirectoryMgrCompareNameDirsFirst();
  176. int        DirectoryMgrCompareSizeAscending();
  177. int        DirectoryMgrCompareSizeDescending();
  178. int        DirectoryMgrCompareLastAccessAscending();
  179. int        DirectoryMgrCompareLastAccessDescending();
  180.  
  181. int        DirectoryMgrFilterName();
  182.  
  183. #else
  184.  
  185. DirectoryMgr *    DirectoryMgrSimpleOpen(char *path, int sort_type,
  186.             char *pattern);
  187. int        DirectoryMgrSimpleRefilter(DirectoryMgr *dm, char *pattern);
  188. int        DirectoryMgrSimpleResort(DirectoryMgr *dm, int sort_type);
  189.  
  190. DirectoryMgr *    DirectoryMgrOpen(char *path, PFI c_func, PFI f_func,
  191.             char *f_data, int free_data);
  192. void        DirectoryMgrClose(DirectoryMgr *dm);
  193. int        DirectoryMgrRefilter(DirectoryMgr *dm, PFI f_func,
  194.             char *f_data, int f_free);
  195. int        DirectoryMgrRefresh(DirectoryMgr *dm);
  196. void        DirectoryMgrResort(DirectoryMgr *dm, PFI c_func);
  197.  
  198. int        DirectoryMgrGotoItem(DirectoryMgr *dm, int i);
  199. int        DirectoryMgrGotoNamedItem(DirectoryMgr *dm, char *name);
  200. void        DirectoryMgrRestart(DirectoryMgr *dm);
  201. DirEntry *    DirectoryMgrCurrentEntry(DirectoryMgr *dm);
  202. DirEntry *    DirectoryMgrNextEntry(DirectoryMgr *dm);
  203. DirEntry *    DirectoryMgrPrevEntry(DirectoryMgr *dm);
  204.  
  205. int        DirectoryMgrSimpleFilterFunc(char *pattern, PFI *ff_ptr,
  206.             char **fd_ptr);
  207. int        DirectoryMgrSimpleSortingFunc(int sort_type, PFI *sf_ptr);
  208.  
  209. int        DirectoryMgrCompareName(DirEntry **e1p, DirEntry **e2p);
  210. int        DirectoryMgrCompareNameDirsFirst(DirEntry **e1p,
  211.             DirEntry **e2p);
  212. int        DirectoryMgrCompareSizeAscending(DirEntry **e1p,
  213.             DirEntry **e2p);
  214. int        DirectoryMgrCompareSizeDescending(DirEntry **e1p,
  215.             DirEntry **e2p);
  216. int        DirectoryMgrCompareLastAccessAscending(DirEntry **e1p,
  217.             DirEntry **e2p);
  218. int        DirectoryMgrCompareLastAccessDescending(DirEntry **e1p,
  219.             DirEntry **e2p);
  220.  
  221. int        DirectoryMgrFilterName(DirEntry *de, char *fsm);
  222.  
  223. #endif
  224.  
  225. #endif
  226.